﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Projeto_Yves_DL
{
    class QuedaObjetos : Game1
    {
        Texture2D ItensRecorte;
        

        private int ValorRecorte;
        private Random SortearRecorte;

        //escolher posicao;
        private Random randPosicao = new Random();

        // dizer qual posicao x foi sorteado;
        public int NumeroSorteado;

        // utiliza para comparar o tempo;
        public float Timer;

        private float MoverEixo = 2f;

        public static List<Rectangle> ListaRect;

        private float ProbabilidadeOne = 0.01f, ProbabilidadeTwo = 0.002f;
        private Random Sortear;


        #region Retangulos

        public readonly Rectangle
       Coracao = new Rectangle(41, 3, 35, 33),
       Estrela = new Rectangle(79, 0, 34, 33),

       Diamante01 = new Rectangle(5, 54, 32, 32),
       Diamante02 = new Rectangle(47, 54, 32, 32),
       Diamante03 = new Rectangle(89, 57, 32, 32),
       Diamante04 = new Rectangle(133, 56, 32, 32),

       CaveiraNegra = new Rectangle(3, 103, 37, 37),
       CaveiraDourada = new Rectangle(42, 103, 36, 36),
       Pedra = new Rectangle(78, 101, 36, 36),
       BolaEnergia = new Rectangle(120, 100, 39, 39),

       MedalhaOuro = new Rectangle(4, 160, 33, 35),
       MedalhaPrata = new Rectangle(46, 160, 33, 35),
       MedalhaBronze = new Rectangle(88, 160, 33, 35);


        #endregion


        public static List<Vector2> Posicao;


        public QuedaObjetos(ContentManager Content)
        {

            Posicao = new List<Vector2>();
            ListaRect = new List<Rectangle>();

            randPosicao = new Random();
            SortearRecorte = new Random();

            Sortear = new Random();

            ItensRecorte = Content.Load<Texture2D>("Itens");
            

        }

        // sorteia pecas
        public void SortearPeca(GameTime gametime)
        {
            Timer += (float)gametime.ElapsedGameTime.TotalMilliseconds;
           

            if (Timer > 1)
            {

                if (Sortear.NextDouble() < ProbabilidadeOne)
                {
                    // sorteia e adiciona um vetor para o retangulo a lista;
                    NumeroSorteado = randPosicao.Next(50, 500);
                    Posicao.Add(new Vector2(NumeroSorteado, -50));

                    ValorRecorte = SortearRecorte.Next(1, 5);
                    ListaRect.Add(RetornaTexturaBom(ValorRecorte));

                }

                if (Sortear.NextDouble() < ProbabilidadeTwo)
                {
                    // sorteia e adiciona um vetor para o retangulo a lista;
                    NumeroSorteado = randPosicao.Next(50, 500);
                    Posicao.Add(new Vector2(NumeroSorteado, -50));

                    ValorRecorte = SortearRecorte.Next(1, 4);
                    ListaRect.Add(RetornaTexturaRuim(ValorRecorte));

                }
            }


            

 

            // da uma nova posição a cada vector adicionado na lista;
            for (int i = 0; i < Posicao.Count; i++)
            {
                Posicao[i] = new Vector2((int)Posicao.ElementAt(i).X,
                    (int)Posicao.ElementAt(i).Y + MoverEixo);

                
                if (Posicao[i].Y > ALTURA)
                {
                    Posicao.RemoveAt(i);
                    ListaRect.RemoveAt(i);
                    i--;
                }

                //if (ColidiuPersonagem01 == true || ColidiuPersonagem02 == true)
                //{
                //    Posicao.RemoveAt(i);
                //    ListaRect.RemoveAt(i);
                //    i--; 
                //}


            }




        }

        private Rectangle RetornaTexturaBom(int valorTextura)
        {
            switch (valorTextura)
            {
                case 1:
                    return Diamante01;
                case 2:
                    return Diamante02;
                case 3:
                    return Diamante03;
                case 4:
                    return Diamante04;
                default:
                    return Coracao;


            }
        }

        private Rectangle RetornaTexturaRuim(int valorTextura)
        {
            switch (valorTextura)
            {

                case 1:
                    return CaveiraDourada;
                case 2:
                    return CaveiraNegra;
                case 3:
                    return Pedra;
                default:
                    return BolaEnergia;



            }
        }

        public void Draw(SpriteBatch spriteBatch)
        {


            if (ListaRect == null)
                return;

            for (int g = 0; g < ListaRect.Count; g++)
                spriteBatch.Draw(ItensRecorte, Posicao[g], ListaRect[g], Color.White);


        }

    }
}
